feat: add official AXI skill and fleet intake guidance - #149
Merged
Conversation
added 3 commits
August 19, 2026 09:16
…ake rules The ordered deliverable was a fleet-written `write-axi` skill describing the AXI contract. That was the wrong remedy: the official `axi` skill already exists, is 273 lines working all ten principles with examples, and `principles.yaml` upstream states outright that the full specification of each principle lives in it. A second description would have been a copy that drifts. So the contract is installed rather than restated, and only what the specification does not cover is written here. Installed: `.agents/skills/axi/` via `npx skills add kunchenguid/axi`, verbatim, plus the `skills-lock.json` manifest the installer writes. MIT; the notice travels in `.agents/skills/axi/LICENSE` beside the copy and again in `docs/axi-skill-provenance.md`, which records the upstream commit (408a653), the content hash, and why the file is never edited here - editing it diverges it from the installer's recorded hash and makes the next update a conflict. Added: `.agents/skills/axi-tool-intake/`, carrying no design guidance by construction, for the four things that are ours: 1. Check BOTH indexes before building, and state which you checked. They disagree in both directions, measured 2026-08-19: `forgejo-axi` is on npm at 1.2.0 and absent from the axi.md catalogue; `docker-axi` and `jj-axi` are in the catalogue and 404 on npm. Checking one and finding nothing proves nothing. An absent catalogue entry means only that nobody filed the pull request. 2. Credentials are never a command-line value and never emitted, and are verified by effect. The specification is silent on this; the rule is labelled as ours. 3. Deriving reads the specific upstream's own licence file, carries the copyright notice with the derived work, and names upstream, version, commit and change in the provenance record. Build on `axi-sdk-js` rather than hand-rolling. 4. How a finished tool reaches every seat is OPEN, tracked as `fleet-forgejo-axi` and `fm-axi-nomistakes-guidance-off-argv`. Publication to the public catalogue is separately solved and is not the same question. Where firstmate's briefing summary disagreed with the measured source, the source wins and the difference is recorded: the Forgejo miss was fourteen days, not one (npm shows 1.0.0 on 2026-08-03), and the axi.md catalogue would not have caught it at all. The trigger floor in `tests/fm-instruction-owners.test.sh` now exempts skills listed in `skills-lock.json` from the frontmatter half - an installed file cannot declare fields this repo invented - while still requiring each to be reachable from AGENTS.md section 13, so an installed skill can never become dead weight. The installed set is read from the manifest rather than listed, for the same staleness reason the check enumerates the directory. `tests/fm-axi-tool-intake.test.sh` asserts the separation in both directions: the installed file still hashes to what was installed, its notice is present, and the overlay names no principle of the contract it defers to.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Intent
The captain asked for a 'write-axi' skill: how to build an agent-ergonomic CLI to the AXI contract (source: https://axi.md/), and - first - the habit of checking whether one already exists, because this fleet twice in one day planned to build a tool that already existed (a Forgejo client filed 2026-08-17 when forgejo-axi was already published; and a plan that said 'adopt sc1's archive tool' when that tool had never been persisted).
The captain then redirected the task three times mid-flight, and those redirections are the intent, not the original brief:
So this change deliberately does NOT contain a fleet-written description of the AXI design contract. That absence is the point. The contract is installed verbatim from upstream at .agents/skills/axi/ (MIT, by Kun Chen) together with the installer's skills-lock.json manifest, and docs/axi-skill-provenance.md records the upstream commit 408a653, the install date, the content hash, and the MIT notice - which is also copied to .agents/skills/axi/LICENSE beside the copy.
Decisions made while doing the work, which a reviewer reading only the diff would not know:
On tests: tests/fm-axi-tool-intake.test.sh asserts on prose and on a sha256, deliberately. Neither skill ships any code - what they carry is an attribution, a boundary between someone else's words and ours, and four rules whose entire value is that they are written down. The repository has established precedent for exactly this in tests/fm-codebase-sweep.test.sh and the domain-modeling attribution checks in tests/fm-instruction-owners.test.sh, both of which assert on adopted-material prose for the same reason: a dropped licence notice, a silently edited upstream file, or a fleet rule quietly reattributed to an external specification are all invisible at load time, because the skill still loads and still works. The sha256 assertion in particular is a real behavioral contract over an installed artifact: it detects a local edit to a vendored file that would break the installer's update path.
Nothing here writes, installs, or publishes an actual AXI tool - the captain's brief explicitly excluded that. Land as a true merge commit; this repository forbids squash.
What Changed
Risk Assessment
✅ Low: The change is well-bounded, conforms to the stated intent, and the prior manifest-parsing and test-contract concerns are adequately resolved without introducing material source risk.
Testing
Inspected the focused diff, ran both targeted contract suites, and manually verified the end-user skill discovery/load surface and installer manifest; all checks passed, with command-output evidence captured and no UI screenshot needed because this change exposes instruction skills rather than a rendered interface.
Evidence: End-user skill discovery and loading surface
Pipeline
Updates from git push no-mistakes
✅ **intent** - passed
✅ No issues found.
✅ **Rebase** - passed
✅ No issues found.
🔧 **Review** - 2 issues found → auto-fixed ✅
tests/fm-axi-tool-intake.test.sh:96- Most tests from this function onward only grep the natural-language skill/AGENTS.md sources for required or forbidden phrases. Per the test-quality rule, this cannot demonstrate that agents receive or follow the intake rules; matching prose may be dead while harmless wording changes fail CI. Remove these assertions or test a deterministic generated instruction interface/real skill-loading consumer instead.tests/fm-axi-tool-intake.test.sh:36- The test checksskills-lock.jsonwith raw substrings, andfm_installed_skill_dirslikewise extractsskillPathusing a line-oriented regex. JSON may remain semantically identical after formatting changes, making these checks fail or silently omit installed skills. Parse the manifest into a normalized semantic model with the repository's JSON consumer (for examplejq) and assert the decoded fields.🔧 Fix: Harden manifest parsing and reshape AXI contract tests
✅ Re-checked - no issues remain.
✅ **Test** - passed
✅ No issues found.
bash tests/fm-axi-tool-intake.test.shbash tests/fm-instruction-owners.test.shManually exercised the AGENTS.md skill-discovery surface, decodedskills-lock.jsonwithjq, and displayed both skills’ frontmatter plus the overlay’s four-section interface✅ **Document** - passed
✅ No issues found.
✅ **Lint** - passed
✅ No issues found.
✅ **Push** - passed
✅ No issues found.